// 心理测试结果页面
Page({
  // 初始化页面数据
  data: {
    result: null,  // 存储测试结果的对象
    suggestion: '' // 根据测试结果生成的建议内容
  },

  // 页面加载时的处理逻辑
  onLoad: function(options) {
    // 检查是否从历史记录页面传入了ID
    if (options.id) {
      // 从本地存储获取测试结果数据
      const result = wx.getStorageSync('currentTestResult');
      
      if (result) {
        // 格式化日期时间显示
        if (result.createTime && typeof result.createTime === 'string') {
          try {
            result.createTime = new Date(result.createTime).toLocaleString();
          } catch (e) {
            console.error('日期格式化错误:', e);
          }
        }
        
        // 检查并重新计算原始分数（如果需要）
        if (result.detailedAnswers && result.detailedAnswers.length > 0 && 
            (result.originalScore === undefined || result.maxPossibleScore === undefined)) {
          console.log('重新计算原始分数');
          
          // 计算用户原始得分
          let originalScore = 0;
          result.detailedAnswers.forEach(answer => {
            originalScore += answer.score;
          });
          
          // 计算最大可能分数（每题满分4分）
          const maxPossibleScore = result.detailedAnswers.length * 4;
          
          // 更新结果对象
          result.originalScore = originalScore;
          result.maxPossibleScore = maxPossibleScore;
          
          console.log('重新计算后的原始分数:', originalScore, '/', maxPossibleScore);
        }
        
        // 根据测试类型和等级生成建议
        const suggestion = this.generateSuggestion(result.type, result.level);
        
        // 更新页面数据
        this.setData({
          result,
          suggestion
        });
      } else {
        // 提示加载失败并返回上一页
        wx.showToast({
          title: '加载测试结果失败',
          icon: 'none'
        });
        
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    } 
    // 从测试页面直接传入结果数据
    else if (options.result) {
      try {
        // 解析JSON格式的结果数据
        const result = JSON.parse(options.result);
        result.createTime = new Date(result.createTime).toLocaleString();
        
        // 根据测试类型和等级生成建议内容
        const suggestion = this.generateSuggestion(result.type, result.level);
        
        // 更新页面数据
        this.setData({
          result,
          suggestion
        });

        // 保存测试结果到云数据库
        this.saveTestResult(result);
      } catch (e) {
        // 处理解析错误
        console.error('解析测试结果错误:', e);
        wx.showToast({
          title: '解析测试结果失败',
          icon: 'none'
        });
        
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    } else {
      // 没有找到测试结果的情况
      wx.showToast({
        title: '未找到测试结果',
        icon: 'none'
      });
      
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }
  },

  // 返回功能页面的方法
  goBack: function() {
    wx.switchTab({
      url: '/pages/function/function'
    });
  },

  // 根据测试类型和级别生成相应的建议文本
  generateSuggestion: function(type, level) {
    let suggestion = '';
    
    // 焦虑自评量表(SAS)的建议内容
    if (type === 'SAS') {
      switch(level) {
        case '正常':
          suggestion = '您的焦虑水平在正常范围内，请继续保持良好的心态。建议：\n1. 保持规律作息\n2. 适当运动放松\n3. 培养兴趣爱好';
          break;
        case '轻度焦虑':
          suggestion = '您存在轻度焦虑倾向，建议：\n1. 学习放松技巧\n2. 与亲友倾诉交流\n3. 适当进行心理咨询';
          break;
        case '中度焦虑':
          suggestion = '您存在中度焦虑，建议：\n1. 及时寻求心理咨询\n2. 学习情绪管理方法\n3. 必要时考虑就医';
          break;
        case '重度焦虑':
          suggestion = '您存在重度焦虑，建议：\n1. 尽快寻求专业心理医生帮助\n2. 考虑进行药物治疗\n3. 家人朋友多陪伴支持';
          break;
      }
    } 
    // 抑郁自评量表(SDS)的建议内容
    else if (type === 'SDS') {
      switch(level) {
        case '正常':
          suggestion = '您的抑郁水平在正常范围内，请继续保持积极乐观的生活态度。建议：\n1. 保持规律作息\n2. 多参与社交活动\n3. 培养兴趣爱好';
          break;
        case '轻度抑郁':
          suggestion = '您存在轻度抑郁倾向，建议：\n1. 多与家人朋友交流\n2. 适当运动放松\n3. 必要时寻求心理咨询';
          break;
        case '中度抑郁':
          suggestion = '您存在中度抑郁，建议：\n1. 及时寻求心理咨询\n2. 学习情绪管理方法\n3. 必要时考虑就医';
          break;
        case '重度抑郁':
          suggestion = '您存在重度抑郁，建议：\n1. 立即寻求专业心理医生帮助\n2. 考虑进行药物治疗\n3. 家人朋友多陪伴支持';
          break;
      }
    }
    
    return suggestion;
  },

  // 将测试结果保存到云数据库
  saveTestResult: function(result) {
    const db = wx.cloud.database();
    
    // 获取用户信息
    const userInfo = wx.getStorageSync('userInfo');
    const userId = userInfo ? userInfo._id : '';
    const username = userInfo ? (userInfo.username || userInfo.nickName || '未知用户') : '未知用户';
    
    // 准备存储到数据库的数据结构
    // 注意：云数据库有大小限制，如果题目太多，可能需要调整存储策略
    const saveData = {
      userId: userId,
      username: username,
      type: result.type,
      name: result.name,
      totalScore: result.totalScore,
      standardScore: result.standardScore,
      level: result.level,
      answers: result.answers, // 保留原始索引数组
      detailedAnswers: result.detailedAnswers, // 保存详细答案
      testQuestions: result.questions.map(q => ({
        _id: q._id,
        content: q.content,
        isReverse: q.isReverse,
        questionIndex: q.questionIndex,
        options: q.options
      })), // 保存当时的题目版本
      testConfig: result.testConfig || { // 保存使用的评分配置
        standardFactor: 1.25,
        mildThreshold: result.type === 'SAS' ? 50 : 53,
        moderateThreshold: result.type === 'SAS' ? 60 : 63,
        severeThreshold: result.type === 'SAS' ? 70 : 73
      },
      createTime: new Date()
    };
    
    console.log('正在保存测试结果:', saveData);
    
    // 调用云数据库API保存数据
    db.collection('psychological_tests').add({
      data: saveData,
      success: res => {
        console.log('测试结果保存成功', res);
      },
      fail: err => {
        console.error('测试结果保存失败', err);
      }
    });
  },

  // 分享测试结果功能
  shareResult: function() {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    });
  },

  // 跳转到咨询预约页面
  goToConsultation: function() {
    wx.navigateTo({
      url: '/pages/application/application'
    });
  }
}); 